{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5d904dee",
   "metadata": {},
   "source": [
    "# Example 11: Unsupervised learning"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6465ec94",
   "metadata": {},
   "source": [
    "### In this example, we will use KAN for unsupervised learning. Instead of trying to figure out how a target variable $y$ depends on input variables, we treat all variables on the equal footing (as input variables). Below we contruct a synthetic dataset where we have six variables $x_1, x_2, x_3, x_4, x_5, x_6$. $(x_1, x_2, x_3)$ are dependent such that $x_3={\\rm exp}({\\rm sin}(\\pi x_1)+x_2^2)$; $(x_4,x_5)$ are dependent such that $x_5=x_4^3$. And $x_6$ is independent of all other variables. Can we use KANs to discover these dependent groups?\n",
    "\n",
    "### The idea is that we treat the problem as a classification problem. The dataset that satisfies these interdependent relations are 'positive' samples, while corrupted samples (by random permutation of features across samples) are 'negative' samples. We want to train a KAN to output 1 when it is a positive sample, and output 0 when it is a negative sample. We set the last layer activation to be Gaussian, so positive samples will have zero activation in the second to last layer, while negtive samples will have non-zero activation in the second to last layer. We can then define the relation implicitly as $g=0$ where $g$ is the activation in the second to last layer."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94056ef6",
   "metadata": {},
   "source": [
    "### Intialize model and create dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0a59179d",
   "metadata": {},
   "outputs": [],
   "source": [
    "from kan import KAN\n",
    "import torch\n",
    "import copy\n",
    "\n",
    "\n",
    "seed = 1\n",
    "\n",
    "model = KAN(width=[6,1,1], grid=3, k=3, seed=seed)\n",
    "\n",
    "# create dataset\n",
    "\n",
    "\n",
    "def create_dataset(train_num=500, test_num=500):\n",
    "    \n",
    "    def generate_contrastive(x):\n",
    "        # positive samples\n",
    "        batch = x.shape[0]\n",
    "        x[:,2] = torch.exp(torch.sin(torch.pi*x[:,0])+x[:,1]**2)\n",
    "        x[:,3] = x[:,4]**3\n",
    "\n",
    "        # negative samples\n",
    "        def corrupt(tensor):\n",
    "            y = copy.deepcopy(tensor)\n",
    "            for i in range(y.shape[1]):\n",
    "                y[:,i] = y[:,i][torch.randperm(y.shape[0])]\n",
    "            return y\n",
    "\n",
    "        x_cor = corrupt(x)\n",
    "        x = torch.cat([x, x_cor], dim=0)\n",
    "        y = torch.cat([torch.ones(batch,), torch.zeros(batch,)], dim=0)[:,None]\n",
    "        return x, y\n",
    "        \n",
    "    x = torch.rand(train_num, 6) * 2 - 1\n",
    "    x_train, y_train = generate_contrastive(x)\n",
    "    \n",
    "    x = torch.rand(test_num, 6) * 2 - 1\n",
    "    x_test, y_test = generate_contrastive(x)\n",
    "    \n",
    "    dataset = {}\n",
    "    dataset['train_input'] = x_train\n",
    "    dataset['test_input'] = x_test\n",
    "    dataset['train_label'] = y_train\n",
    "    dataset['test_label'] = y_test\n",
    "    return dataset\n",
    "\n",
    "dataset = create_dataset()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "79665292",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 8 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model(dataset['train_input'])\n",
    "model.plot(beta=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "45760ca2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# set the (1,0,0) activation to be gausssian\n",
    "#model.fix_symbolic(1,0,0,lambda x: torch.exp(-x**2/10),fit_params_bool=False)\n",
    "model.fix_symbolic(1,0,0,'gaussian',fit_params_bool=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d951ae17",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 8 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model(dataset['train_input'])\n",
    "model.plot(beta=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "aa26622b",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "train loss: 1.66e-01 | test loss: 1.49e-01 | reg: 7.61e+00 : 100%|██| 50/50 [00:16<00:00,  3.12it/s]\n"
     ]
    }
   ],
   "source": [
    "model.train(dataset, opt=\"LBFGS\", steps=50, lamb=0.002, lamb_entropy=10.0);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "9d162e40",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 8 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b828d97a",
   "metadata": {},
   "source": [
    "### This gives the dependence among $(x_1,x_2,x_3)$. Another random seed can give dependence among $(x_4,x_5)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "abf1936d",
   "metadata": {},
   "outputs": [],
   "source": [
    "seed = 42\n",
    "model = KAN(width=[6,1,1], grid=3, k=3, seed=seed, noise_scale_base=1.0)\n",
    "dataset = create_dataset()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "23b9c0d3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 8 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model(dataset['train_input'])\n",
    "model.plot(beta=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "7992b551",
   "metadata": {},
   "outputs": [],
   "source": [
    "# set the (1,0,0) activation to be gausssian\n",
    "#model.fix_symbolic(1,0,0,lambda x: torch.exp(-x**2/10),fit_params_bool=False)\n",
    "model.fix_symbolic(1,0,0,'gaussian',fit_params_bool=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d9b19eba",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 8 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model(dataset['train_input'])\n",
    "model.plot(beta=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c6a28a6c",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "train loss: 7.83e-02 | test loss: 1.19e-01 | reg: 1.28e+01 : 100%|█| 100/100 [00:26<00:00,  3.73it/s\n"
     ]
    }
   ],
   "source": [
    "model.train(dataset, opt=\"LBFGS\", steps=100, lamb=0.001, lamb_entropy=10.0);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "150e592b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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1Sc/+Un94he/oEhmFiFc/p8zOkkuAmlZVrMikHl5eYE7GfutQrFJQbrsOBUDBw7UXXfdpYcffjjQaxeWZenKK6/Upk2btHnzZp155pmaOHGiPvGJT2jZsmVqaGjwuolwWVZPiwWhzEpn+LWYpClBvOw4FbFYTFdddZX27dvni+KWpmzfvl3z58/X2rVrddppp+mWW27R5MmT1aVLF6+bBhdkVbj4vQikKUGo+9VZQb3sOFVOccuxY8dq2bJlXjfHqDfffFP33nuvfvGLX6ioqEjTp0/XjTfemDEhig9lfLhk+ugkUTaEiiPTpsNasmLFCk2ePFlr167V6NGjvW6Ocbt379Z9992n5cuXq2vXrvrud7+r7373uyosLPS6aTAg48IlcXSSeJltYphk2gk3m0JFytzpsGS2bWvcuHHasmWLtm/frlNOOcXrJrni3Xff1QMPPKDFixcrJydHN954o6ZPn06RzIDLiHAJWhFIU4JY96uzMn06LNn+/fs1ePBgXXjhhXrmmWcy+t93//79qqio0COPPKJoNKrJkydr1qxZOuOMM7xuGjogsOESxCKQpmRjqDiyYTos2a9//WuNHTtWS5Ys0Q033OB1c1z3v//9T4888ogqKipUU1Oj66+/XrNnz9Y555zjddPQDoEJl8QikJlwI2NHBLWYpCnZMh3WktLSUj399NOBKG5pypEjR5qKZO7fv19f+cpXdOutt2rgwIFeNw0pCES4RKNR1dXVSQpumZXOcq5uy8ZQkbJvOizZ4cOHNWTIEPXr108bNmzIqn//uro6PfbYY7rvvvv0z3/+U0899ZSuu+46r5uFE3AtXExu1rlfw62pEDcOVNPd6ozU3ODWdukDs32QWK7HDX4/DhK35UZbsymw08G1le5YLNZUlsMU5+AywRkFuLXYb9u28ZOh6QM1HSVT3AgY09zsg40bN+qPf/yjLy8qcW6u7dOnjyZPnuzKe2zYsEF//OMflZOT4+qXg46ybVt9+/ZVaWmp103JOK594p06XG19mBIvofWieKLbJShMfsNMDCsTB6hlWU0nF7f45WSSHEiJbXJ7Vnj37t368pe/rNNPP93V92mvgwcP6q677tK3v/1trVq1yrX32bVrl6666ipt2LBBn/70p3XppZe69l4dUV9fr/vuu8/rZmQk179OtXRycU6UdXV1zUYjkUhEubm5aTkhpWupqaP74rTPWcBP/nnic0s68h7pXGpL97+n8/k60WvTFXxdu3ZV9+7d0/JeqWhoaNAdd9yhJ554Qj179lRubq6r7/fOO+9owYIF+tznPqerr77aV6O4SCSSlWt46eBZr9bX1zetoziBEo1GFY1G03ri8yPn5OiM6qSPnrXiHAiJf5/N/ZW4/4lX0zmckV7if9ksHo/rkUce0apVqzR48GDNmDHD9fccPny4Bg8erN///vf6y1/+ktWf12yS9nBxqg87z9/Iz89XJBJpenZFQ0OD0bWVoHFOlsnPWnFGKs59LU7IOCfTbDtgWwoVR2KVAidQEv+czVfcbdy4UXfeeadOPvlkPfrooyoqKnL9fXNzczVz5kxFo1EtWLAgq4/vbOLJyMVZ63CG484Bn5eX1/T32XaylI4PFidUEr9xJ/7ZWaPKtoBpLVSSA6Wl0Uq2jmBs29bOnTs1ZcoUxWIxVVZWpvV+kS9+8Yu64IIL9MILL+iVV17Jms9qNktruDijFudxtInfHp0bIkOhULOaYNki8YQpfXQHemsnQefn2RQwzv4lBrCkZtOF2RgcqaiurlZJSYneffddff/739fo0aPT2k/5+fmaO3euGhsbdfvttysajabtveGNtI9cnA9Va1eSRSKRptdl8omyJYlVm6UTLzg7f584RZaJkkOltYsaCJWWRaNRzZ49W1u2bFFxcbFmzZqV9kVsy7I0atQoffazn9Xvf/97PfPMM1l3fGebtH7CnGmM1u6ydkYvlmU1jXCyQeI38fZO2yS/PnlBO+haumoucf2JUGmbbdtasmSJli9frvPPP18LFy5sWt9Mt0gkogULFigvL09z5szR/v37PWkH0iNt4eJMiUkfjU5a41yqmA0B4+xf4lVh7T1ZJn6DT95eULU1BUaopMa2bb300ku67bbbdNJJJ+nRRx9V7969PWuPZVkaNmyYysrK9M4776i8vLzpnIDMk9aRS2JF27bWEpzwyZYPXvJ0WEdlwvRYqlNgaJtt29q9e7dKS0vV0NCgiooKDRo0yPO+C4VCuu222zRgwAD9/Oc/1+rVqwP/RQgtS+vIxZkSS2UtIRQKHXc1UKZJXIDv7LfxxN9NPEEHxYlChdFK+1RXV+ub3/ym9u3bpxkzZmjcuHG+6bvCwkL99Kc/VX5+vm666SbufclQaQkX54Y/SSnfnZs4esnkD17i/SwmDv7k6bEgYF3FrIaGBs2cOVN/+tOfdO211+rWW2/11fNvLMvSZz7zGc2fP1/V1dWaMGGC3nrrrUB9ZnFiaRu5OFNcqTyLI/EejkydGktexDchefQSBMnrKoRK58TjcVVUVOjnP/+5Bg0apMrKSs8W8NtiWZamTJmi6dOna8+ePSouLtaOHTsC87nFiaUtXJwiiamuKzgBk7ygm0k6s4jfluS79/0q+eKD5JtF0T62bWvdunW6++67dcopp+hnP/uZevXq5du+DIfDuvPOO3XzzTdr165dGjVqlFatWpW1N1FnmrSES+LTE9sjU68aSy7vYlJQRi/JN40yWukc27b16quvatq0acrJydGSJUt03nnn+b4v8/LyNG/ePN177706cuSIbrjhBn31q1/V5s2bdezYscCtHeIjaSlPmnzXeSqSp8bcrtyaLm19WzfJsqzjLhjwm+RpQT+2MQhs29auXbs0adIkVVdXq6KiQiNGjAhMf+bm5mr69OkaNmyYZs+erV/96ld6/vnndd5552n48OEaMGCATjnlFHXt2rWpirFTLqpHjx4qLCzUxz72sbRVVEdqXA+XxMX89j773AkYpxyMnxYlOyMdTxRMLKPjt35r6fkqnBQ6xrZt7d+/X1/72te0Z88ezZgxQyUlJYErIx8KhXTppZdqw4YN+tWvfqXly5dr27Zt2rFjR9OUevKXkFAopEgkou7du+uss87SZZddpi996Uu64IILmm7GhnfSMnLpzH0c4XC46amWQa9km65RSxC4HbDZoqamRiUlJdq2bZsmTJigO+64w1fPS2kPy7LUrVs3TZgwQePHj9e//vUvvfHGG9q1a5f279+vo0ePNlVUj8ViOnbsmA4cOKB9+/bpjTfe0NatW7Vw4UJdc801uvPOO3Xuuedm7fHlB2kZuXRkvUU6fmrsRHf2B0E6T6rOvUJ+nhqT/Nsuv6utrdW0adP029/+Vp///Of14x//2JdXhrWXcyP1WWedpbPOOktS6+uH8Xhc9fX1eu+997Rx40YtXbpUa9as0csvv6xFixalvUAnPuL6Ga6zJ9PEGyqDvLCXfGOj26OW5HpjfuH3daCgqK+v16xZs7R69WoNGzZMP/vZz9SjRw+vm+Walh6j4Hz5LCgo0DnnnKMpU6bopZde0l133aXq6mpNmjRJa9euDfR5I8jS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\n",
      "text/plain": [
       "<Figure size 500x400 with 8 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ce90a441",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
